在开发中,不可避免的需要进行数据之间的交互,而这些数据往往是通过与服务器端进行交互得到,并进行相应的处理等

传统数据通信方式总结

  • 原生XHR对象:用起来麻烦,而且功能受限
  • jsonp方式:jsonp可以跨越,但本质上是在绕过同源策略的限制,会带来比较严重的安全隐患,已逐步淘汰
  • $.ajax:功能丰富、易用,但jQuery本身已不是开发主流,所以为了一个ajax引入整个jQuery很不划算

现代数据通信方式

FromData

用于处理复杂表单操作的对象,用于提交表单、上传文件等应用

FromData不是数据交互方法,而是一种容器,所以和fetch、Axios等不是同类

fetch

原生xhr对象的一种高级封装,使用更简便,而且无需引入任何库、性能高,简单封装就可以发挥强大的功能

Axios

专门用于数据通信的库,体积小、性能高,而且可以和各类其他模块/库配合(如:FromData、Redux等)

WebSocket

全双工通信,服务器可直接推送数据

总结

名称 优点 缺点 适用场景
FromData 表单整体提交、文件上传 无法独立工作
fetch 原生支持 使用稍微麻烦,可进行封装解决 完全代替ajax
Axios 使用便捷、功能全面 完全代替ajax
WebSocket 全双工 本身不兼容,但可使用socket.io等库 适合服务器推送

HTTP/2

http/1.1改进版,具有大量的新特性,值得期待啊,哈哈

  • 加密:顺便干掉了https
  • 头压缩:减少体积
  • 服务端推送:双工通信
  • 流水线请求:大幅降低小对象的请求开销
  • 修复头阻塞问题(HOL Blocking):同上
  • 多路复用:提升性能
  • 更适应现代化网络应用的要求:如桌面浏览器、移动端浏览器、代理/反代理、防火墙、内容付费等支持

前端扫地僧
2.5k 声望1.2k 粉丝

慢慢理解世界、慢慢更新自己